home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
WINMX Assorted Textfiles
/
Ebooks.tar
/
Text - Mathematics - Numerical Mathematics and Computing (F).zip
/
sch.f
< prev
next >
Wrap
Text File
|
2002-06-11
|
1KB
|
52 lines
C
C PAGE 300: NUMERICAL MATHEMATICS AND COMPUTING, CHENEY/KINCAID, 1985
C
C FILE: SCH.FOR
C
C INTERPOLATES TABLE USING SCHOENBERG'S PROCESS (SCH,ESCH,F)
C
DIMENSION D(22),X(101),Y(101),Z(101)
EXTERNAL F, ESCH
DATA A,B,N,NP2,M/-5.,5.,20,22,101/
CALL SCH(F,A,B,NP2,D)
PRINT 2,(D(J),J=1,NP2)
2 FORMAT(1X,5E25.15)
H=(B-A)/FLOAT(M-1)
DO 3 J=1,M
X(J)=A+H*FLOAT(J-1)
Y(J)=ESCH(A,B,NP2,D,X(J))
3 Z(J)=Y(J)-F(X(J))
DO 4 J=1,M
4 PRINT 2,X(J),Y(J),Z(J)
STOP
END
FUNCTION F(X)
F=1.0/(X**2+1.0)
RETURN
END
SUBROUTINE SCH(F,A,B,NP2,D)
DIMENSION D(NP2)
H = (B - A)/REAL(NP2-3)
DO 2 J = 2,NP2-1
2 D(J) = F(A + H*REAL(J-2))
D(1) = 2.0*D(2) - D(3)
D(NP2) = 2.0*D(NP2-1) - D(NP2-2)
RETURN
END
FUNCTION ESCH(A,B,NP2,D,X)
DIMENSION D(NP2)
H = (B - A)/REAL(NP2-3)
C = A - 2.5*H
Y = (X - C)/H
J = INT(Y)
Y = Y - AINT(Y)
P = D(J+1)*Y + D(J)*(2.0 - Y)
Q = D(J)*(Y + 1.0) + D(J-1)*(1.0 - Y)
ESCH = (P*Y + Q*(1.0 - Y))*0.5
RETURN
END